package chapter02.part01;

import chapter02.FileUtil;

import java.io.IOException;
import java.io.InputStreamReader;
import java.io.OutputStreamWriter;
import java.nio.CharBuffer;
import java.nio.charset.StandardCharsets;

/**
 * 文本的输入输出
 * 
 * @author insight
 * @since 2021/8/6
 */
public class TextIO {
    public static void main(String[] args) throws IOException {
        // 存储文本字符串时 需要考虑字符编码
        // OutputStreamWriter & InputStreamReader 作为字节流->字符流的桥梁
        // 写: 字符->字节
        // 读: 字节->字符
        OutputStreamWriter writer =
                new OutputStreamWriter(FileUtil.getTestFileOutputStreamInstance(),
                        StandardCharsets.UTF_8);
        InputStreamReader reader =
                new InputStreamReader(FileUtil.getTestFileInputStreamInstance(),
                        StandardCharsets.UTF_8);

        writer.write("123");
        // 记得只要是写 就需要刷新
        writer.flush();
        CharBuffer cbuf = CharBuffer.allocate(5);
        int readChar = reader.read(cbuf);
        if (readChar > 0) {
            System.out.println(cbuf.array());
        }
        // 获取缓冲区的当前字符
        // 此时因为已经读了3个字符 缓冲区还剩两个空白字符 所以get()得到的是空白字符
        // 同样可以通过 mark & reset 移动指针
        char c = cbuf.get();
        System.out.println(c);
    }
}